/**
 * The MIT License (MIT)
 * 
 * Copyright (c) 2016 mo_yq5 (mo_yq5@163.com)
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy of
 * this software and associated documentation files (the "Software"), to deal in
 * the Software without restriction, including without limitation the rights to
 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 * the Software, and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 */
package com.openapi.alipay.trade;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * 请求参数－分账明细的信息
 * @author Moyq5
 * @since 2016年7月25日
 */
public class RoyaltyDetailInfo {

	/**
	 * 分账序列号，表示分账执行的顺序，必须为正整数<br>
	 * 最长9，如：1
	 */
	@JsonProperty("serial_no")
	private Integer serialNo;
	
	/**
	 * 接受分账金额的账户类型：<br>
	 * userId：支付宝账号对应的支付宝唯一用户号。<br>
	 * bankIndex：分账到银行账户的银行编号。目前暂时只支持分账到一个银行编号。<br>
	 * storeId：分账到门店对应的银行卡编号。 <br>
	 * 默认值为userId。 <br>
	 * 最长24，如：userId
	 */
	@JsonProperty("trans_in_type")
	private String transInType;
	
	/**
	 * 分账批次号 分账批次号。 目前需要和转入账号类型为bankIndex配合使用。<br>
	 * 必填，最长32，如：123
	 */
	@JsonProperty("batch_no")
	private String batchNo;
	
	/**
	 * 商户分账的外部关联号，用于关联到每一笔分账信息，商户需保证其唯一性。<br>
	 * 如果为空，该值则默认为“商户网站唯一订单号+分账序列号”<br>
	 * 最长64，如：20131124001
	 */
	@JsonProperty("out_relation_id")
	private String outRelationId;
	
	/**
	 * 要分账的账户类型。 目前只支持userId：支付宝账号对应的支付宝唯一用户号。 默认值为userId。<br>
	 * 必填，最长24，如：userId
	 */
	@JsonProperty("trans_out_type")
	private String transOutType;
	
	/**
	 * 如果转出账号类型为userId，本参数为要分账的支付宝账号对应的支付宝唯一用户号。以2088开头的纯16位数字。<br>
	 * 必填，最长16，如：2088101126765726
	 */
	@JsonProperty("trans_out")
	private String transOut;
	
	/**
	 * 如果转入账号类型为userId，本参数为接受分账金额的支付宝账号对应的支付宝唯一用户号。<br>
	 * 以2088开头的纯16位数字。<br>
	 * 如果转入账号类型为bankIndex，本参数为28位的银行编号（商户和支付宝签约时确定）。<br>
	 * 如果转入账号类型为storeId，本参数为商户的门店ID。<br>
	 * 必填，最长28，如：2088101126708402
	 */
	@JsonProperty("trans_in")
	private String transIn;
	
	/**
	 * 分账的金额，单位为元<br>
	 * 必填，最长9，如：0.1
	 */
	private Integer amount;
	
	/**
	 * 分账描述信息<br>
	 * 最长1000，如：分账测试1
	 */
	private String desc;
	
	/**
	 * 分账的比例，值为20代表按20%的比例分账<br>
	 * 最长3，如：100
	 */
	@JsonProperty("amount_percentage")
	private String amountPercentage;

	/**
	 * @return the serialNo
	 */
	public Integer getSerialNo() {
		return serialNo;
	}

	/**
	 * @param serialNo the serialNo to set
	 */
	public void setSerialNo(Integer serialNo) {
		this.serialNo = serialNo;
	}

	/**
	 * @return the transInType
	 */
	public String getTransInType() {
		return transInType;
	}

	/**
	 * @param transInType the transInType to set
	 */
	public void setTransInType(String transInType) {
		this.transInType = transInType;
	}

	/**
	 * @return the batchNo
	 */
	public String getBatchNo() {
		return batchNo;
	}

	/**
	 * @param batchNo the batchNo to set
	 */
	public void setBatchNo(String batchNo) {
		this.batchNo = batchNo;
	}

	/**
	 * @return the outRelationId
	 */
	public String getOutRelationId() {
		return outRelationId;
	}

	/**
	 * @param outRelationId the outRelationId to set
	 */
	public void setOutRelationId(String outRelationId) {
		this.outRelationId = outRelationId;
	}

	/**
	 * @return the transOutType
	 */
	public String getTransOutType() {
		return transOutType;
	}

	/**
	 * @param transOutType the transOutType to set
	 */
	public void setTransOutType(String transOutType) {
		this.transOutType = transOutType;
	}

	/**
	 * @return the transOut
	 */
	public String getTransOut() {
		return transOut;
	}

	/**
	 * @param transOut the transOut to set
	 */
	public void setTransOut(String transOut) {
		this.transOut = transOut;
	}

	/**
	 * @return the transIn
	 */
	public String getTransIn() {
		return transIn;
	}

	/**
	 * @param transIn the transIn to set
	 */
	public void setTransIn(String transIn) {
		this.transIn = transIn;
	}

	/**
	 * @return the amount
	 */
	public Integer getAmount() {
		return amount;
	}

	/**
	 * @param amount the amount to set
	 */
	public void setAmount(Integer amount) {
		this.amount = amount;
	}

	/**
	 * @return the desc
	 */
	public String getDesc() {
		return desc;
	}

	/**
	 * @param desc the desc to set
	 */
	public void setDesc(String desc) {
		this.desc = desc;
	}

	/**
	 * @return the amountPercentage
	 */
	public String getAmountPercentage() {
		return amountPercentage;
	}

	/**
	 * @param amountPercentage the amountPercentage to set
	 */
	public void setAmountPercentage(String amountPercentage) {
		this.amountPercentage = amountPercentage;
	}
}
